package com.lagou.test;

import com.lagou.model.User;
import com.lagou.server.ServerManagerDao;
import com.lagou.server.ServerInitClose;
import com.lagou.server.ServerUserDao;
import com.lagou.server.ServerView;

import java.io.IOException;
import java.util.LinkedList;
import java.util.List;

public class ServerTest {

    public static void main(String[] args) {
        ServerInitClose sic = null;

        try {
            // 5.当服务器启动时，将文件中的所有学员账户信息读取出来
            // 声明List类型的引用指向实现类的对象
            List<User> userList = new LinkedList<>();
            // 声明ServerUserDao类型的引用指向该类型的对象
            ServerUserDao sud = new ServerUserDao(userList);
            // 调用成员方法读取所有学员信息并打印
            userList = sud.readUserFile();
            System.out.println("读取到的学员账户信息有：");
            for(User tu: userList) {
                System.out.println(tu);
            }

            System.out.println("-------------------------------------");
            // 1.声明ServerInitClose类型的引用指向该类型的对象
            sic = new ServerInitClose();
            // 2.调用成员方法实现服务器的初始化操作
            sic.serverInit();
            // 4.声明ServerDao类型的引用指向该类型的对象
            ServerManagerDao sd = new ServerManagerDao();
            // 3.声明ServerView类型的引用指向该类型的对象
            ServerView sv = new ServerView(sic, sd, userList);
            sv.serverReceive();

            System.out.println("-------------------------------------");
            // 6.当项目退出时调用成员方法将集合中的所有学员账户信息写入到文件中
            sud.writeUserFile();

        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            // 3.调用成员方法实现服务器的关闭操作
            /*try {
                sic.serverClose();
            } catch (IOException e) {
                e.printStackTrace();
            }*/
        }
    }
}
